package com.yunzheng.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunzheng.entity.ActivityUser;
import com.yunzheng.vo.PuserShowVO;
import com.yunzheng.dto.RegisterDTO;
import com.yunzheng.dto.UserChangeDTO;
import com.yunzheng.vo.UserShowVO;
import com.yunzheng.entity.SysUser;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 郭思良
 * @create 2020-07-23 15:38
 *
 */

public interface SysUserService extends IService<SysUser> {

    /**
     * 根据用户ID返回用户信息
     *
     * @param userId 用户ID
     * @return 用户胡信息
     */
    UserShowVO selectInfoById(String userId);


    /**
     * 根据用户ID修改用户的信息
     *
     * @param userId 用户ID
     * @param userChangeDTO 用户信息对象
     */
    void updateInfoById(String userId, UserChangeDTO userChangeDTO);


    /**
     * 根据用户ID删除用户
     *
     * @param userId 用户ID
     */
    void removeUserById(String userId);

    /**
     * 根据用户手机号发送验证码
     *
     * @param userPhone 手机号对象
     */
    void sentVerification(String userPhone);


    /**
     * 完成注册
     *
     * @param registerDTO 验证对象
     */
    void register(RegisterDTO registerDTO);

    /**
     * 登录
     *
     * @param userPhone 手机
     * @param password 密码
     * @return token
     */
    String login(String userPhone, String password) ;

    /**
     * 退出
     *
     * @param request 请求
     */
    void outLogin(HttpServletRequest request);



    /**
     * 修改密码
     * @param userId ID
     * @param oldPasswd 旧密码
     * @param newPasswd 新密码
     */
    void changePSW(String userId, String oldPasswd, String newPasswd);


    /*
     * 发送修改密码的验证码
     * @param userId 用户id
     */
//    void changeVerification(String userId);

    /**
     * 邀请新成员加入项目组
     *
     * @param projectId 项目ID
     * @param userPhone 成员ID
     */
    void addProjectUser(String projectId, String userPhone);


    /**
     * 根据项目ID展示所负责的成员
     *
     * @param projectId 项目ID
     * @return 用户成员ID
     */
    List<PuserShowVO> showProjectUser(String projectId);



    /**
     * 发送忘记密码用的验证码
     * 给当前登录用户发送验证码
     * @param userPhone 用户手机
     */
    void forgetVerification(String userPhone);

    /**
     * 修改密码
     * @param userPhone 手机号
     * @param newPasswd 新密码
     * @param captcha 验证码
     */
    void forgetPSW(String userPhone, String newPasswd, String captcha, String passwdTwo);


}

